home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / 0502.ZIP / CURVEFIT.BAS < prev    next >
BASIC Source File  |  1986-12-31  |  46KB  |  808 lines

  1. 1 REM 'CURVEIBM.BAS' 12/25/85 BY T. S. COX  FOR DOUBLE PRECISION USE /D ENTERING BASIC
  2. 2 REM 'REVISED 12/25/85 CHGD 20055,20067,20068,14570,35015,15102,35016,20041,3590,3584,4507
  3. 3 KEY OFF: REM Revised Again 12/13/86 to pretty-up display
  4. 4 REM IF USED WITH CP/M OBASIC THIS LINE SHOULD READ 'CLEAR 4000'
  5. 5 DEFDBL A,B,C,S,R,X,Y
  6. 6 DIM EQ$(25):GOSUB 55000
  7. 7 REM revised 11/30/85 to allow null data lines input from LOTUS to be dropped
  8. 8 REM revised 12/06/85 for COMPILED version to stop crashing for 0 inputs 
  9. 9 CLS:COLOR  7,1,0
  10. 10 PRINT"╔═══════════╦═══════════════════════════════════════════════════════╦══════════╗";
  11. 11 PRINT"║ CURVEFIT  ║ Version 2.10 December 31, 1986      by  Thomas S. Cox ║ CURVEFIT ║";
  12. 12 PRINT"╠═══════════╩═══════════════════════════════════════════════════════╩══════════╣";
  13. 13 PRINT"║ PURPOSE     This program performs a least squares curve fit on X, Y data.    ║";
  14. 14 PRINT"║             Curves for 25 equations are fitted.  Equation coefficients,      ║";
  15. 15 PRINT"║             Correlation Coefficient, and Best Fit are computed.  For any     ║";
  16. 16 PRINT"║             of the 25 equations, predictions for Y can be calculated.        ║";
  17. 17 PRINT"║                                                                              ║";
  18. 18 PRINT"║ REFERENCE   CURVE FITTING FOR PROGRAMMABLE CALCULATORS by William M. Kolb    ║";
  19. 19 PRINT"║             Published by: IMTEC  P. O. Box 1402  Bowie MD  20716             ║";
  20. 20 PRINT"║                                                                              ║";
  21. 21 PRINT"║ DISCLAIMER  Although effort has been taken to insure that accurate           ║";
  22. 22 PRINT"║             results are obtained when using this program, the user           ║";
  23. 23 PRINT"║             assumes ALL risks. Good practice dictates that sample data       ║";
  24. 24 PRINT"║             will be used before using REAL data.                             ║";
  25. 25 PRINT"║                                                                              ║";
  26. 26 PRINT"║ COPIES      This program is placed in the PUBLIC DOMAIN and may be           ║";
  27. 27 PRINT"║             freely copied.  However, the author retains all commercial       ║";
  28. 28 PRINT"║             rights.  For a copy of latest version send a DSDD (360k) disk    ║";
  29. 29 PRINT"║             and postage or, alternatively, $5.00 to the author at:           ║";
  30. 30 PRINT"║             102 Evergreen St.  Easley, SC  29640.  Comments are welcomed.    ║";
  31. 31 PRINT"╚══════════════════════════════════════════════════════════════════════════════╝";
  32. 32 PRINT" ":PRINT TAB(2);:INPUT"PRESS <ENTER> TO START PROGRAM EXECUTION";A$
  33. 33 CLS:COLOR 7,1,0:XQ=0
  34. 55 DIM X1$(255),Y1$(255),X$(255),Y$(255),X(255),Y(255),R(65),RR(25)
  35. 56 DIM RC(25),A(25),B(25),C(25):FOR I=1 TO 255:X$(I)="END":Y$(I)="END":NEXT I
  36. 110 IF XQ >0 THEN 1000 ELSE 115
  37. 115 CLS:COLOR 7,1,0:XQ=1
  38. 120 CLS:COLOR 7,1,0:PRINT "╔═══════════╦═══════════════════════════════════════════════════════╦══════════╗";
  39. 130 PRINT "║ CURVEFIT  ║  Version 2.10 December 31, 1986     by Thomas S. Cox  ║ CURVEFIT ║";
  40. 131 PRINT "╠═══════════╩═══════════════════════════════════════════════════════╩══════════╣";
  41. 132 PRINT "║                           M A S T E R     M E N U                            ║";
  42. 134 PRINT "╠═══════════╦══════════╤═══════════════════════════════════════════════════════╣";
  43. 135 PRINT "║  SELECT   ║ CHOICES  │         BRIEF DESCRIPTION OF CHOICES                  ║";
  44. 140 PRINT "╠═══════════╬══════════╪═══════════════════════════════════════════════════════╣";
  45. 150 PRINT "║    [ ]    ║ ENTER    │ New Data (X and Y values) |LIMIT VALUES TO +/- 10,000 ║";
  46. 160 PRINT "║    [ ]    ║ LOAD     │ A Previously Stored Data File                         ║";
  47. 170 PRINT "║    [ ]    ║ ADD      │ Data to Values of X and Y Currently in Memory         ║";
  48. 180 PRINT "║    [ ]    ║ DELETE   │ or CHANGE Values of X and Y Currently in Memory       ║";
  49. 190 PRINT "║    [ ]    ║ LIST     │ X and Y Values Currently in Memory                    ║";
  50. 200 PRINT "║    [ ]    ║ CALCULATE│ Equation Coefficients (A, B, C, and R^2)              ║";
  51. 210 PRINT "║    [ ]    ║ PREDICT  │ Value of Y, given Value of X                          ║";
  52. 220 PRINT "║    [ ]    ║ SHOW     │ LIST of EQUATIONS Fitted Using this Program           ║";
  53. 230 PRINT "║    [ ]    ║ REVIEW   │ Equation Coefficients (A, B, C, R^2)                  ║";
  54. 240 PRINT "║    [ ]    ║ DISPLAY  │ List of SUMS and SUMS of SQUARES                      ║";
  55. 250 PRINT "║    [ ]    ║ STORE    │ X and Y Data Points to a DISK FILE                    ║";
  56. 260 PRINT "║    [ ]    ║ EXIT     │ Leave Program and EXIT to DOS                         ║";
  57. 270 PRINT "╠═══════════╩══════════╧═══════════════════════════════════════════════════════╣";
  58. 274 PRINT "║    USE <UP> OR <DOWN> KEYS TO MAKE SELECTION, PRESS <ENTER>.  <ESC> to EXIT  ║";
  59. 280 PRINT "╚══════════════════════════════════════════════════════════════════════════════╝";
  60. 284 LP=0
  61. 285 D1=8:GOTO 63500        
  62. 1000 CLS: COLOR 7,1,0:PRINT "DATA ENTRY ROUTINE": PRINT " "
  63. 1001 INPUT"This routine will overwrite any existing data.  OK to proceed (Y) or (N)";A1$
  64. 1002 IF LEFT$(A1$,1)="Y" OR LEFT$(A1$,1)="y" THEN 1006
  65. 1003 IF LEFT$(A1$,1)="N" OR LEFT$(A1$,1)="n" THEN 120
  66. 1004 GOTO 120
  67. 1006 FOR I=1 TO 255:X$(I)="END":Y$(I)="END":NEXT I:PRINT"ALL VALUES HAVE BEEN SET TO ZERO"
  68. 1008 INPUT "Do you want to have INPUT data listed on printer (Y or N)";Q1$
  69. 1009 GOSUB 50000:CLS:COLOR 7,1,0:M=1
  70. 1010 PRINT "Enter (S)top for X or Y to terminate data entry."
  71. 1011 CLS:COLOR 7,1,0:M=1:MR=1:MC=1
  72. 1012 PRINT "╔═══════════╦═══════════════════════════════════════════════════════╦═════════╗"
  73. 1013 PRINT "║ CURVEFIT  ║  Version 2.10 December 31, 1986     by Thomas S. Cox  ║CURVEFIT ║"
  74. 1014 PRINT "╠═══════════╩═══════════════════════════════════════════════════════╩═════════╣"
  75. 1015 PRINT "║ DATA ENTRY SCREEN|  Enter (S) for X or Y to terminate Data Entry            ║"
  76. 1016 PRINT "╠═════╦═════════╦═════════╦═════╦═════════╦═════════╦═════╦═════════╦═════════╣"
  77. 1017 PRINT "║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║"
  78. 1018 PRINT "╠═════╬═════════╬═════════╬═════╬═════════╬═════════╬═════╬═════════╬═════════╣"
  79. 1019 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  80. 1020 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  81. 1021 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  82. 1022 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  83. 1023 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  84. 1024 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  85. 1025 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  86. 1026 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  87. 1027 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  88. 1028 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  89. 1029 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  90. 1030 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  91. 1031 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  92. 1032 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  93. 1033 PRINT "╠═════╩══════╦══╩════════╦╩═════╩╦════════╩════╦════╩══╦══╩═════════╩═════════╣"
  94. 1034 PRINT "║ ENTER DATA ║PT #       ║X VALUE║             ║Y VALUE║                      ║"
  95. 1035 PRINT "╚════════════╩═══════════╩═══════╩═════════════╩═══════╩══════════════════════╝";
  96. 1036 FOR J=1 TO 255
  97. 1040 LOCATE 23,21:PRINT "     ";:LOCATE 23,21:PRINT USING "####";M;
  98. 1042 LOCATE 23,36:PRINT"  ░░░░░░░░";:LOCATE 23,36,1,0,31:INPUT;X$(M):LOCATE 23,36:PRINT"          ";:LOCATE 23,36:PRINT "  "+X$(M);
  99. 1044 LOCATE 23,58:PRINT"  ░░░░░░░░";:LOCATE 23,58,1,0,31:INPUT;Y$(M):LOCATE 23,58:PRINT"          ";:LOCATE 23,58:PRINT "  "+Y$(M);
  100. 1046 LOCATE 7+MR,MC+2:PRINT USING "####";M;
  101. 1048 LOCATE 7+MR,MC+7:XX1=VAL(X$(M)):PRINT USING "######.##";XX1;:LOCATE 7+MR,MC+17:YY1=VAL(Y$(M)):PRINT USING "######.##";YY1;
  102. 1049 MR=MR+1
  103. 1052 IF M MOD 14=0 THEN MR=1:MC=MC+26
  104. 1053 IF M MOD 42=0 THEN MR=1:MC=1
  105. 1054 IF LEFT$(X$(J),1)="S" OR LEFT$(X$(J),1)="s" GOTO 1500
  106. 1075 IF LP=1 THEN LPRINT"X( ";J;" )= ";X$(J);TAB(40);"Y( ";J;" )= ";Y$(J)
  107. 1077 M=M+1
  108. 1080 NEXT J
  109. 1090 GOTO 120
  110. 1500 X$(J)="END":Y$(J)="END":LOCATE 25,1:PRINT"(S)top encountered.  More Data (Y or N).";:INPUT;A$
  111. 1510 IF A$ = "Y" OR A$ = "y" THEN MR=MR-1:LOCATE 25,1:PRINT"                                                    ";:GOTO 1040
  112. 1520 GOTO 4620
  113. 2000 CLS:COLOR 7,1,0:PRINT"DATA ADDITION ROUTINE":PRINT" "
  114. 2011 CLS:COLOR 7,1,0:M=1:MR=1:MC=1
  115. 2012 PRINT "╔═══════════╦═══════════════════════════════════════════════════════╦═════════╗"
  116. 2013 PRINT "║ CURVEFIT  ║  Version 2.10 December 31, 1986     by Thomas S. Cox  ║CURVEFIT ║"
  117. 2014 PRINT "╠═══════════╩═══════════════════════════════════════════════════════╩═════════╣"
  118. 2015 PRINT "║ DATA ADDITION|      Enter (S) for X or Y to terminate Data Entry            ║"
  119. 2016 PRINT "╠═════╦═════════╦═════════╦═════╦═════════╦═════════╦═════╦═════════╦═════════╣"
  120. 2017 PRINT "║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║"
  121. 2018 PRINT "╠═════╬═════════╬═════════╬═════╬═════════╬═════════╬═════╬═════════╬═════════╣"
  122. 2019 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  123. 2020 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  124. 2021 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  125. 2022 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  126. 2023 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  127. 2024 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  128. 2025 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  129. 2026 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  130. 2027 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  131. 2028 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  132. 2029 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  133. 2030 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  134. 2031 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  135. 2032 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  136. 2033 PRINT "╠═════╩══════╦══╩════════╦╩═════╩╦════════╩════╦════╩══╦══╩═════════╩═════════╣"
  137. 2034 PRINT "║ ENTER DATA ║PT #       ║X VALUE║             ║Y VALUE║                      ║"
  138. 2035 PRINT "╚════════════╩═══════════╩═══════╩═════════════╩═══════╩══════════════════════╝";
  139. 2036 FOR J=1 TO 255
  140. 2037 IF X$(J)<>"END" OR Y$(J)<>"END" THEN 2046
  141. 2040 LOCATE 23,21:PRINT "     ";:LOCATE 23,21:PRINT USING "####";M;
  142. 2042 LOCATE 23,36:PRINT"  ░░░░░░░░";:LOCATE 23,36,1,0,31:INPUT;X$(M):LOCATE 23,36:PRINT"          ";:LOCATE 23,36:PRINT "  "+X$(M);
  143. 2044 LOCATE 23,58:PRINT"  ░░░░░░░░";:LOCATE 23,58,1,0,31:INPUT;Y$(M):LOCATE 23,58:PRINT"          ";:LOCATE 23,58:PRINT "  "+Y$(M);
  144. 2046 LOCATE 7+MR,MC+2:PRINT USING "####";M;
  145. 2048 LOCATE 7+MR,MC+7:XX1=VAL(X$(M)):PRINT USING "######.##";XX1;:LOCATE 7+MR,MC+17:YY1=VAL(Y$(M)):PRINT USING "######.##";YY1;
  146. 2049 MR=MR+1
  147. 2052 IF M MOD 14=0 THEN MR=1:MC=MC+26
  148. 2053 IF M MOD 42=0 THEN MR=1:MC=1
  149. 2054 IF LEFT$(X$(J),1)="S" OR LEFT$(X$(J),1)="s" GOTO 2500
  150. 2075 IF LP=1 THEN LPRINT"X( ";J;" )= ";X$(J);TAB(40);"Y( ";J;" )= ";Y$(J)
  151. 2077 M=M+1
  152. 2080 NEXT J
  153. 2090 GOTO 120
  154. 2500 X$(J)="END":Y$(J)="END":LOCATE 25,1:PRINT"(S)top encountered.  More Data (Y or N).";:INPUT;A$
  155. 2510 IF A$ = "Y" OR A$ = "y" THEN MR=MR-1:LOCATE 25,1:PRINT"                                                    ";:GOTO 2040
  156. 2520 GOTO 4620
  157. 3000 CLS:COLOR 7,1,0:PRINT"DATA CORRECTION":PRINT" "
  158. 3011 CLS:COLOR 7,1,0:M=1:MR=1:MC=1
  159. 3012 PRINT "╔═══════════╦═══════════════════════════════════════════════════════╦═════════╗"
  160. 3013 PRINT "║ CURVEFIT  ║  Version 2.10 December 31, 1986     by Thomas S. Cox  ║CURVEFIT ║"
  161. 3014 PRINT "╠═══════════╩═══════════════════════════════════════════════════════╩═════════╣"
  162. 3015 PRINT "║ DATA CORRECTION| Enter 'D' to DELETE, 'S' to STOP                           ║"
  163. 3016 PRINT "╠═════╦═════════╦═════════╦═════╦═════════╦═════════╦═════╦═════════╦═════════╣"
  164. 3017 PRINT "║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║"
  165. 3018 PRINT "╠═════╬═════════╬═════════╬═════╬═════════╬═════════╬═════╬═════════╬═════════╣"
  166. 3019 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  167. 3020 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  168. 3021 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  169. 3022 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  170. 3023 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  171. 3024 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  172. 3025 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  173. 3026 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  174. 3027 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  175. 3028 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  176. 3029 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  177. 3030 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  178. 3031 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  179. 3032 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  180. 3033 PRINT "╠═════╩══════╦══╩════════╦╩═════╩╦════════╩════╦════╩══╦══╩═════════╩═════════╣"
  181. 3034 PRINT "║ ENTER DATA ║PT #       ║X VALUE║             ║Y VALUE║                      ║"
  182. 3035 PRINT "╚════════════╩═══════════╩═══════╩═════════════╩═══════╩══════════════════════╝";
  183. 3036 FOR J=1 TO 255
  184. 3037 IF X$(J)<>"END" OR Y$(J)<>"END" THEN 3046
  185. 3040 LOCATE 23,20:PRINT "     ";:LOCATE 23,20:INPUT;M:LOCATE 23,20:PRINT USING "####";M;
  186. 3042 LOCATE 23,36:PRINT"  ░░░░░░░░";:LOCATE 23,36,1,0,31:INPUT;X$(M):IF LEFT$(X$(M),1)="d" OR LEFT$(X$(M),1)="D" THEN X$(M)="DEL"
  187. 3043 LOCATE 23,36:PRINT"          ";:LOCATE 23,36:PRINT"  "+X$(M);
  188. 3044 LOCATE 23,58:PRINT"  ░░░░░░░░";:LOCATE 23,58,1,0,31:INPUT;Y$(M):IF LEFT$(Y$(M),1)="d" OR LEFT$(Y$(M),1)="D" THEN Y$(M)="DEL"
  189. 3045 LOCATE 23,58:PRINT"          ";:LOCATE 23,58:PRINT"  "+Y$(M);
  190. 3046 LOCATE 7+MR,MC+2:PRINT USING "####";M;
  191. 3048 LOCATE 7+MR,MC+7:XX1=VAL(X$(M)):PRINT LEFT$(X$(M),8);:LOCATE 7+MR,MC+17:YY1=VAL(Y$(M)):PRINT LEFT$(Y$(M),8);
  192. 3049 MR=MR+1
  193. 3052 IF M MOD 14=0 THEN MR=1:MC=MC+26
  194. 3053 IF M MOD 42=0 THEN MR=1:MC=1
  195. 3054 IF LEFT$(X$(M),1)="S" OR LEFT$(X$(M),1)="s" GOTO 3100
  196. 3075 IF LP=1 THEN LPRINT"X( ";J;" )= ";X$(J);TAB(40);"Y( ";J;" )= ";Y$(J)
  197. 3077 M=M+1
  198. 3080 NEXT J
  199. 3090 GOTO 120
  200. 3100 X$(M)="END":Y$(M)="END":LOCATE 25,1:PRINT"(S)top encountered.  More Data (Y or N).";:INPUT;A$
  201. 3110 IF A$ = "Y" OR A$ = "y" THEN MR=MR-1:LOCATE 25,1:PRINT"                                                    ";:GOTO 3040
  202. 3120 GOTO 3430
  203. 3430 CLS:PRINT "Rearranging Data for Deletions"
  204. 3470 K1=1
  205. 3480 FOR I= 1 TO 255
  206. 3490 X1$(I)=X$(I): Y1$(I)=Y$(I): NEXT I
  207. 3540 FOR I= 1 TO 255
  208. 3545 IF X1$(I)="DEL" THEN 3580
  209. 3550 IF X1$(I)<>"DEL"  THEN GOSUB 3587
  210. 3570 IF X1$(I)="END" THEN X$(K1)="END":Y$(K1)="END": GOTO 3582
  211. 3580 NEXT I
  212. 3582 FOR I= 1 TO 255: IF X$(I)="END" OR LEFT$(X$(I),1)="S" OR LEFT$(X$(I),1)="s" GOTO 3584
  213. 3583 NEXT I
  214. 3584 PRINT "There are now "; I-1;" VALID data points. ":FOR I=1 TO 500:NEXT I:GOTO 3590
  215. 3587 X$(K1)=X1$(I): Y$(K1)=Y1$(I): K1=K1+1: RETURN
  216. 3590 Q7=0:IF QA=1 THEN QA=0:GOTO 20045
  217. 3591 IF DE=1 THEN DE=0:GOTO 7090
  218. 3600 INPUT "LIST NEW DATA SET (Y/N) ";A2$
  219. 3610 IF A2$="Y" OR A2$= "y" GOTO 9005 ELSE 120
  220. 4000 CLS:COLOR 7,1,0: PRINT "CALCULATING SUMS AND SUMS OF SQUARES"
  221. 4010 PRINT "PLEASE HAVE PATIENCE: THIS WILL TAKE SOME TIME!"
  222. 4020 GOTO 20000
  223. 4040 CLS:COLOR 7,1,0:IF X$(1)="END" OR Y$(1)="END" THEN PRINT "NO DATA ENTERED, CAN'T SHOW COEFFICIENTS!": PRINT CHR$(7): FOR I=1 TO 1000: NEXT I: GOTO 120
  224. 4220 MX=0
  225. 4230 FOR I=1 TO 25
  226. 4240 IF RC(I)>MX THEN 4250
  227. 4245 GOTO 4260
  228. 4250 MX=RC(I):MQ=I
  229. 4260 NEXT I
  230. 4265 IF R2=1 THEN R2=0 :RETURN
  231. 4500 PRINT CHR$(7):A1$="###":A2$="#.####^^^^":A3$="##.####":A0$="###.####"
  232. 4501 INPUT "Output coefficients to printer (Y or N)";Q1$
  233. 4502 CLS:COLOR 7,1,0:GOSUB 50000
  234. 4503 A4$="EQ#    COEF A      COEF B      COEF C       R^2    R^2 C   EQUATION"
  235. 4505 INPUT"Print A, B, and R^2 to SCREEN (ALL DIGITS) First? {Y}es or {N}o ";A$:IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN 35000
  236. 4507 CLS:COLOR 7,1,0:INPUT"View Coefficients (A, B, C, R^2, Corr R^2, Eqn) on Screen (Y)es or (N)o ";A$:IF LEFT$(A$,1)="N" OR LEFT$(A$,1)="n" THEN 4572
  237. 4510 CLS:COLOR 7,1,0:PRINT A4$
  238. 4515 LC=0
  239. 4520 FOR I= 1 TO 22
  240. 4521 IF A(I)=0 AND B(I)=0 THEN 4532
  241. 4530 PRINT USING A1$;I;:PRINT"  ";:PRINT USING A2$;A(I);:PRINT"  ";:PRINT USING A2$;B(I);:PRINT"  ";:PRINT USING A2$;C(I);:PRINT"  ";:PRINT USING A3$;RR(I);:PRINT USING A0$;RC(I);:PRINT" ";:PRINT EQ$(I):LC=LC+1
  242. 4532 NEXT I
  243. 4535 IF LP=1 THEN 4560
  244. 4536 IF LC<=19 THEN 4560
  245. 4540 INPUT "Press <Enter> for the remaining coefficients. ";A$
  246. 4550 PRINT A4$
  247. 4560 FOR I= 23 TO 25
  248. 4561 IF A(I)=0 AND B(I)=0 THEN 4571
  249. 4570 PRINT USING A1$;I;:PRINT"  ";:PRINT USING A2$;A(I);:PRINT"  ";:PRINT USING A2$;B(I);:PRINT"  ";:PRINT USING A2$;C(I);:PRINT"  ";:PRINT USING A3$;RR(I);:PRINT USING A0$;RC(I);:PRINT" ";:PRINT EQ$(I)
  250. 4571 NEXT I
  251. 4572  IF LP<>1 THEN 4580
  252. 4573 IF LP=1 THEN LPRINT A4$
  253. 4574 FOR I=1 TO 25
  254. 4575 IF A(I)=0 AND B(I)=0 THEN 4578
  255. 4576 IF LP=1 THEN LPRINT USING A1$;I;:LPRINT"  ";:LPRINT USING A2$;A(I);:LPRINT"  ";:LPRINT USING A2$;B(I);:LPRINT"  ";:LPRINT USING A2$;C(I);:LPRINT"  ";:LPRINT USING A3$;RR(I);:LPRINT USING A0$;RC(I);:LPRINT" ";:LPRINT EQ$(I)
  256. 4578 NEXT I
  257. 4580 R2=1: GOSUB 4220
  258. 4600 PRINT "Based on the value of RC(), the best fit was # ";MQ
  259. 4605 IF LP=1 THEN LPRINT"BASED ON THE VALUE OF RC( )--BEST FITTING CURVE WAS NUMBER";MQ
  260. 4610 INPUT "PRESS <ENTER> to return to MAIN MENU";A$
  261. 4620 IF LP=1 THEN LPRINT CHR$(12)
  262. 4630 GOTO 120
  263. 4990 PRINT CL$: AZ$=""
  264. 5000 K=0:L=0:IF AZ$="S" THEN INPUT "All data entered, press <Enter> to continue";A$
  265. 5002 CLS:COLOR 7,1,0: PRINT "Predicted value of Y, given X":K=1
  266. 5003  INPUT "Quit and return to main menu or Predict (Q or P)";AZ$
  267. 5004 PRINT CL$:IF L=1 AND LP=1 THEN LPRINT CHR$(12)
  268. 5005 IF LEFT$(AZ$,1)="q" OR LEFT$(AZ$,1)="Q" THEN 120
  269. 5006 INPUT "Output results to printer (Y or N) ";Q1$
  270. 5007 GOSUB 50000
  271. 5010 INPUT "Starting value for X";SX
  272. 5020 INPUT "Ending value for X";EX
  273. 5030 INPUT "Step value for X";ST
  274. 5040 INPUT "Equation number for prediction (1-25)";EQ
  275. 5050 IF EQ<1 OR EQ>25 GOTO 120
  276. 5051 IF A(EQ)=0 AND B(EQ)=0 THEN PRINT"THE EQUATION  ";EQ$(EQ);" IS NOT DEFINED FOR THIS DATA SET.":PRINT"RETURNING TO MAIN MENU":FOR M=1 TO 2000:NEXT M:GOTO 120
  277. 5052 PRINT "PREDICTIONS ARE FOR EQUATION ";TAB(40);EQ$(EQ)
  278. 5053 IF LP=1 THEN LPRINT"PREDICTIONS FOR EQUATION ";EQ$(EQ):LPRINT" "
  279. 5060 K=0:ON EQ GOTO 5100,5110,5120,5130,5140,5150,5160,5170,5180,5190,5200,5210,5220,5230,5240,5250,5260,5270,5280,5290,5300,5310,5320,5330,5340,5350
  280. 5100 FOR Q=SX TO EX STEP ST:Y=A(1)+B(1)*Q:GOSUB 5500:NEXT Q:GOTO 5003
  281. 5110 FOR Q=SX TO EX STEP ST:Y=B(2)*Q:GOSUB 5500:NEXT Q:GOTO 5003
  282. 5120 FOR Q=SX TO EX STEP ST:Y=1/(A(3)+B(3)*Q):GOSUB 5500:NEXT Q:GOTO 5003
  283. 5130 FOR Q=SX TO EX STEP ST:Y=A(4)+B(4)*Q+C(4)/Q:GOSUB 5500:NEXT Q:GOTO 5003
  284. 5140 FOR Q=SX TO EX STEP ST:Y=A(5)+B(5)/Q:GOSUB 5500:NEXT Q:GOTO 5003
  285. 5150 FOR Q=SX TO EX STEP ST:Y=Q/(A(6)*Q+B(6)):GOSUB 5500:NEXT Q:GOTO 5003
  286. 5160 FOR Q=SX TO EX STEP ST:Y=A(7)+B(7)/Q+C(7)/(Q*Q):GOSUB 5500:NEXT Q:GOTO 5003
  287. 5170 FOR Q=SX TO EX STEP ST:Y=A(8)+B(8)*Q+C(8)*Q*Q:GOSUB 5500:NEXT Q:GOTO 5003
  288. 5180 FOR Q=SX TO EX STEP ST:Y=A(9)*Q+B(9)*Q*Q:GOSUB 5500:NEXT Q:GOTO 5003
  289. 5190 FOR Q=SX TO EX STEP ST:Y=A(10)*Q^B(10):GOSUB 5500:NEXT Q:GOTO 5003
  290. 5200 FOR Q=SX TO EX STEP ST:Y=A(11)*B(11)^Q:GOSUB 5500:NEXT Q:GOTO 5003
  291. 5210 FOR Q=SX TO EX STEP ST:Y=A(12)*B(12)^(1/Q):GOSUB 5500:NEXT Q:GOTO 5003
  292. 5220 FOR Q=SX TO EX STEP ST:Y=A(13)*Q^(B(13)*Q):GOSUB 5500:NEXT Q:GOTO 5003
  293. 5230 FOR Q=SX TO EX STEP ST:Y=A(14)*Q^(B(14)/Q):GOSUB 5500:NEXT Q:GOTO 5003
  294. 5240 FOR Q=SX TO EX STEP ST:Y=A(15)*EXP(B(15)*Q):GOSUB 5500:NEXT Q:GOTO 5003
  295. 5250 FOR Q=SX TO EX STEP ST:Y=A(16)*EXP(B(16)/Q):GOSUB 5500:NEXT Q:GOTO 5003
  296. 5260 FOR Q=SX TO EX STEP ST:Y=A(17)+B(17)*LOG(Q):GOSUB 5500:NEXT Q:GOTO 5003
  297. 5270 FOR Q=SX TO EX STEP ST:Y=1/(A(18)+B(18)*LOG(Q)):GOSUB 5500:NEXT Q:GOTO 5003
  298. 5280 FOR Q=SX TO EX STEP ST:Y=A(19)*B(19)^Q*Q^C(19):GOSUB 5500:NEXT Q:GOTO 5003
  299. 5290 FOR Q=SX TO EX STEP ST:Y=A(20)*B(20)^(1/Q)*Q^C(20):GOSUB 5500:NEXT Q:GOTO 5003
  300. 5300 FOR Q=SX TO EX STEP ST:Y=A(21)*EXP((Q-B(21))/2):GOSUB 5500:NEXT Q:GOTO 5003
  301. 5310 FOR Q=SX TO EX STEP ST:Y=A(22)*EXP((LOG(Q)-B(22))^2/C(22)):GOSUB 5500:NEXT Q:GOTO 5003
  302. 5320 FOR Q=SX TO EX STEP ST:Y=A(23)*Q^B(23)*(1-Q)^C(23):GOSUB 5500:NEXT Q:GOTO 5003
  303. 5330 FOR Q=SX TO EX STEP ST:Y=A(24)*(Q/B(24))^C*EXP(Q/B(24)):GOSUB 5500:NEXT Q:GOTO 5003
  304. 5340 FOR Q=SX TO EX STEP ST:Y=1/(A(25)*(Q+B(25))^2+C(25)):GOSUB 5500:NEXT Q:GOTO 5003
  305. 5350 REM * END OF Y PREDICTIONS *
  306. 5500 REM *
  307. 5502 L=1
  308. 5505 IF LP=1 THEN LPRINT"If X= ";Q,"Then Y= ";Y
  309. 5510 PRINT "IF X= ";Q,"THEN Y= ";Y:K=K+1
  310. 5511 IF LP=1 THEN 5515
  311. 5512 IF INT(K/22)=K/22 THEN PRINT"PRESS <ENTER> TO CONTINUE":INPUT AQ
  312. 5515 IF LP=1 AND (INT(K/60)=(K/60)) THEN LPRINT CHR$(12)
  313. 5520 RETURN
  314. 6000 REM * STORE DATA ON DISK (RAW DATA ONLY) *
  315. 6030 CLS:PRINT "This routine will store RAW DATA on Disk"
  316. 6035 ON ERROR GOTO 63000
  317. 6040 INPUT "Please enter File Name for Data Storage ";A4$
  318. 6050 OPEN "O",1,A4$
  319. 6060 FOR I=1 TO 255
  320. 6065 IF X$(I)="END" AND Y$(I)="END" THEN PRINT #1, X$(I):PRINT #1,Y$(I):CLOSE 1:GOTO 6080
  321. 6070 PRINT #1,X$(I):PRINT #1,Y$(I):NEXT I:CLOSE 1
  322. 6080 PRINT "Data have been stored to disk with File Name ";A4$
  323. 6090 INPUT "Press <Enter> to return to MAIN MENU";Z0
  324. 6100 GOTO 120
  325. 6772 0 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║          ║"
  326. 7000 REM * LOAD DATA FROM DISK *
  327. 7030 CLS:PRINT"This routine will load DATA from Disk"
  328. 7035 ON ERROR GOTO 61000
  329. 7040 INPUT "PLEASE Enter File Name for Data ";A4$
  330. 7045 NX=0:NY=0
  331. 7050 OPEN "I",1,A4$
  332. 7060 FOR I=1 TO 255
  333. 7065 IF EOF(1) THEN PRINT"ALL DATA LOADED":K=I:FOR J=K TO 255:X$(J)="END":Y$(J)="END":NEXT J:GOTO 7075
  334. 7070 INPUT #1,X$(I)
  335. 7071 IF INSTR(2,X$(I)," ")<>0 THEN 7200
  336. 7073 INPUT #1,Y$(I):NEXT I
  337. 7075 CLOSE 1
  338. 7080 PRINT "Data loaded from file ";A4$
  339. 7082 FOR I=1 TO 255:IF X$(I)="" THEN X$(I)="DEL":Y$(I)="DEL"
  340. 7083 IF X$(I)="END" THEN IF X$(1)<>"DEL" THEN 7090 ELSE DE=1:GOTO 3430
  341. 7084 NEXT I:DE=1:GOTO 3430
  342. 7090 INPUT "Press ENTER to Continue";A9:GOTO 3430
  343. 7100 GOTO 120
  344. 7200 CLOSE 1:OPEN "I",1,A4$
  345. 7210 FOR I=1 TO 255
  346. 7220 IF EOF(1) THEN PRINT"ALL DATA LOADED":K=I:FOR J=K TO 255:X$(J)="END":Y$(J)="END":NEXT J:GOTO 7275
  347. 7230 INPUT #1,DUMM$
  348. 7240 PM=INSTR(2,DUMM$," "):X$(I)=LEFT$(DUMM$,PM):Y$(I)=RIGHT$(DUMM$,LEN(DUMM$)-PM):NEXT I
  349. 7275 GOTO 7075
  350. 8000 CLS:COLOR 7,1,0:PRINT"PROGRAM EXECUTION HAS BEEN TERMINATED"
  351. 8010 INPUT "Before exiting do you wish to store data on disk (Y or N)";A$
  352. 8020 IF LEFT$(A$,1)="N" OR LEFT$(A$,1)="n"  THEN END
  353. 8030 GOTO 6030
  354. 9000 REM * LIST RAW DATA *
  355. 9005 CLS:COLOR 7,1,0:PRINT "LIST OF DATA ENTERED"
  356. 9006 INPUT "Do you want to list data on printer (Y or N)";Q1$
  357. 9007 GOSUB 50000:GOTO 63700
  358. 9008 IF LP=1 THEN LPRINT"LISTING OF DATA":LPRINT" "
  359. 9009 IF LP=0 THEN 9100
  360. 9010 FOR I=1 TO 255
  361. 9020 IF X$(I)="END" OR Y$(I)="END" THEN LPRINT CHR$(12):GOTO 9100
  362. 9065 IF LP=1 THEN LPRINT"X( ";I;" )= ";X$(I);TAB(32);"Y( ";I;" )= ";Y$(I)
  363. 9066 IF LP=1 AND (INT(I/60)=(I/60)) THEN LPRINT CHR$(12) 
  364. 9074 NEXT I:IF LP=1 THEN LPRINT CHR$(12)
  365. 9100 IF Q7=1 THEN  Q7=0:RETURN
  366. 9110 GOTO 120
  367. 10000 CLS:COLOR 7,1,0
  368. 10010 PRINT "╔═══════════════════════════════════════════════════════════════════════════╗"
  369. 10020 PRINT "║                      EQUATIONS FITTED USING THIS PROGRAM                  ║"
  370. 10030 PRINT "╠════════════════════════════════════╦══════════════════════════════════════╣"
  371. 10040 PRINT "║  1. Y=A+B*X       STR. LINE        ║   2. Y=B*X           LINE THRU ORG.  ║"
  372. 10050 PRINT "║  3. Y=1/(A+B*X)   REC. STR LINE    ║   4. Y=A+B*X+C/X     LIN AND RECIP.  ║"
  373. 10060 PRINT "║  5. Y=A+B/X       HYPERBOLA        ║   6. Y=X/(A*X+B)     RECIP HYPERBOLA ║"
  374. 10070 PRINT "║  7. Y=A+B/X+C/X*X 2ND ORD HYP      ║   8. Y=A+B*X+C*X*X   PARABOLA        ║"
  375. 10080 PRINT "║  9. Y=A*X+B*X*X   PAR AT ORIGIN    ║  10. Y=A*X^B         POWER           ║"
  376. 10090 PRINT "║ 11. Y=A*B^X       MOD. POWER       ║  12. Y=B^(1/X)       ROOT            ║"
  377. 10100 PRINT "║ 13. Y=A*X^(B*X)   SUPER GEOMET.    ║  14. Y=A*X^(B/X)     MOD GEOMETRIC   ║"
  378. 10110 PRINT "║ 15. Y=A*e^(B*X)   EXPONENTIAL      ║  16. Y=A*e^(B/X)     MOD EXPONENTIAL ║"
  379. 10120 PRINT "║ 17. Y=A+B*ln(X)   LOGARITHMIC      ║  18. Y=1/(A+B*ln(X))   RECIP LOG     ║"
  380. 10130 PRINT "║ 19. Y=A*B^X*X^C   HOERL FUNCTION   ║  20. Y=A*B^(1/X)*X^C   MOD HOERL     ║"
  381. 10140 PRINT "║ 21. Y=A*e^((X-B)/2)   NORMAL       ║  22. Y=A*e^((ln(X)-B)^2/C) LOG NORMAL║"
  382. 10150 PRINT "║ 23. Y=A*X^B*(1-X)^C   BETA         ║  24. Y=A*(X/B)^C*e^(X/B)   GAMMA     ║"
  383. 10160 PRINT "║ 25. Y=1/(A*(X+B)^2+C) CAUCHY       ║                                      ║"
  384. 10170 PRINT "╠════════════════════════════════════╩══════════════════════════════════════╣"
  385. 10180 PRINT "║      NOTES:  A.  Values of X and Y may be positive, negative, or zero     ║"
  386. 10190 PRINT "║              B.  Only 255 values of X and Y can be used.                  ║"
  387. 10200 PRINT "╠═══════════════════════════════════════════════════════════════════════════╣"
  388. 10210 PRINT "║      Press <RETURN> to continue program execution                         ║"
  389. 10220 PRINT "╚═══════════════════════════════════════════════════════════════════════════╝"
  390. 10230 A$=INKEY$:IF A$<>CHR$(13) THEN 10230 ELSE 10460
  391. 10460 IF R1=1 THEN RETURN ELSE 120
  392. 12000 FOR I=1 TO 25:A(I)=0:B(I)=0:C(I)=0:RR(I)=0:RC(I)=0:NEXT I
  393. 12005 REM * EQUATION 1 STRAIGHT LINE
  394. 12007 ON ERROR GOTO 0
  395. 12010 A(1)=(R(17)*R(18)-R(16)*R(20))/(R(17)*R(21)-(R(16)*R(16)))
  396. 12020 B(1)=(R(20)*R(21)-R(16)*R(18))/(R(17)*R(21)-(R(16)*R(16)))
  397. 12030 RR(1)=(A(1)*R(18)+B(1)*R(20)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  398. 12040 RC(1)=1-(((1-RR(1))*(R(21)-1))/(R(21)-2))
  399. 12050 C(1)=0
  400. 12060 REM * EQUATION 2 STRAIGHT LINE THROUGH ORIGIN *
  401. 12070 A(2)=0: B(2)=R(20)/R(17): RR(2)=0: RC(2)=0: C(2)=0
  402. 12140 REM * EQUATION 3 RECIPROCAL OF STRAIGHT LINE
  403. 12150 A(3)=(R(17)*R(24)-R(16)*R(34))/(R(17)*R(21)-(R(16)*R(16)))
  404. 12160 B(3)=(R(21)*R(34)-R(16)*R(24))/(R(17)*R(21)-(R(16)*R(16)))
  405. 12170 RR(3)=(A(3)*R(24)+B(3)*R(34)-((R(24)*R(24))/R(21)))/(R(25)-(R(24)*R(24))/R(21))
  406. 12180 RC(3)=1-(((1-RR(3))*(R(21)-1))/(R(21)-2))
  407. 12190 C(3)=0
  408. 12200 REM * EQUATION 4  COMBINED LINEAR AND RECIPROCAL *
  409. 12220 S1=R(17)*R(21)-(R(16)*R(16))
  410. 12230 S2=R(21)*R(35)-R(18)*R(22)
  411. 12240 S3=(R(21)*R(21))-R(16)*R(22)
  412. 12250 S4=R(20)*R(21)-R(16)*R(18)
  413. 12260 S5=R(21)*R(23)-(R(22)*R(22))
  414. 12270 C(4)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  415. 12280 B(4)=(S4-S3*C(4))/S1
  416. 12290 A(4)=(R(18)-B(4)*R(16)-C(4)*R(22))/R(21)
  417. 12300 RR(4)=(A(4)*R(18)+B(4)*R(20)+C(4)*R(35)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  418. 12310 RC(4)=1-(((1-RR(4))*(R(21)-1))/(R(21)-3))
  419. 12320 REM * EQUATION 5  HYPERBOLA *
  420. 12330 S1=R(21)*R(23)-(R(22)*R(22))
  421. 12340 A(5)=(R(18)*R(23)-R(22)*R(35))/S1
  422. 12360 B(5)=(R(21)*R(35)-R(18)*R(22))/S1
  423. 12370 RR(5)=(A(5)*R(18)+B(5)*R(35)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  424. 12380 RC(5)=1-(((1-RR(5))*(R(21)-1))/(R(21)-2))     
  425. 12390 C(5)=0
  426. 12400 REM * EQUATION 6  RECIPROCAL OF A HYPERBOLA *
  427. 12420 S1=R(21)*R(23)-(R(22)*R(22))
  428. 12430 A(6)=(R(23)*R(24)-R(22)*R(26))/S1
  429. 12440 B(6)=(R(21)*R(26)-R(22)*R(24))/S1  
  430. 12450 RR(6)=(A(6)*R(24)+B(6)*R(26)-(R(24)*R(24))/R(21))/(R(25)-(R(24)*R(24))/R(21))
  431. 12460 RC(6)=1-(((1-RR(6))*(R(21)-1))/(R(21)-2))
  432. 12462 C(6)=0
  433. 12470 REM * EQUATION 7  SECOND ORDER HYPERBOLA *
  434. 12490 S1=R(21)*R(23)-(R(22)*R(22))
  435. 12500 S2=R(21)*R(38)-R(18)*R(23)
  436. 12510 S3=R(21)*R(41)-R(22)*R(23)
  437. 12520 S4=R(21)*R(35)-R(18)*R(22)
  438. 12530 S5=R(21)*R(44)-(R(23)*R(23))
  439. 12532 ON ERROR GOTO 0
  440. 12535 IF (S1*S5-S3*S3)=0 THEN 12620
  441. 12540 C(7)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  442. 12545 IF C(7)>=9.999999E+37 THEN A(7)=0:B(7)=0:C(7)=0:GOTO 12590
  443. 12550 B(7)=(S4-S3*C(7))/S1
  444. 12560 A(7)=(R(18)-C(7)*R(23)-B(7)*R(22))/R(21)
  445. 12570 RR(7)=(A(7)*R(18)+B(7)*R(35)+C(7)*R(38)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  446. 12580 RC(7)=1-(((1-RR(7))*(R(21)-1))/(R(21)-3))  
  447. 12590 REM * EQUATION 8  PARABOLA *
  448. 12620 S1=R(17)*R(21)-(R(16)*R(16))
  449. 12630 S2=R(21)*R(36)-R(17)*R(18)
  450. 12640 S3=R(21)*R(40)-R(16)*R(17)
  451. 12650 S4=R(20)*R(21)-R(16)*R(18)
  452. 12660 S5=R(21)*R(43)-(R(17)*R(17))
  453. 12670 C(8)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  454. 12680 B(8)=(S4-S3*C(8))/S1
  455. 12690 A(8)=(R(18)-C(8)*R(17)-B(8)*R(16))/R(21)
  456. 12700 RR(8)=(A(8)*R(18)+B(8)*R(20)+C(8)*R(36)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  457. 12710 RC(8)=1-(((1-RR(8))*(R(21)-1))/(R(21)-3))
  458. 12720 REM * EQUATION 9  PARABOLA THROUGH ORIGIN *
  459. 12750 S1=R(17)*R(43)-(R(40)*R(40))
  460. 12760 A(9)=(R(20)*R(43)-R(36)*R(40))/S1
  461. 12770 B(9)=(R(17)*R(36)-R(20)*R(40))/S1
  462. 12780 C(9)=0: RR(9)=0: RC(9)=0
  463. 12810 REM * EQUATION 10  POWER *
  464. 12820 IF NX=1 OR NY=1 THEN 13000
  465. 12840 S1=R(21)*R(29)-(R(28)*R(28))
  466. 12850 S3=(R(29)*R(30)-R(28)*R(32))/S1
  467. 12860 A(10)=EXP((R(29)*R(30)-R(28)*R(32))/S1)
  468. 12870 B(10)=(R(21)*R(32)-R(28)*R(30))/S1    
  469. 12875 RR(10)=(S3*R(30)+B(10)*R(32)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  470. 12880 IF RR(10)<0 OR RR(10)>1 THEN A(10)=0:B(10)=0:GOTO 13000
  471. 12890 RC(10)=1-(((1-RR(10))*(R(21)-1))/(R(21)-2))
  472. 12895 C(10)=0
  473. 13000 REM * EQUATION 11  MODIFIED POWER *
  474. 13010 IF NY=1 THEN 13110
  475. 13020 S1=R(17)*R(21)-(R(16)*R(16))
  476. 13030 S2=(R(17)*R(30)-R(16)*R(46))/S1
  477. 13040 S3=(R(21)*R(46)-R(16)*R(30))/S1
  478. 13060 A(11)=EXP(S2)
  479. 13070 B(11)=EXP(S3)
  480. 13080 RR(11)=(S2*R(30)+S3*R(46)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  481. 13090 RC(11)=1-(((1-RR(11))*(R(21)-1))/(R(21)-2))
  482. 13100 C(11)=0
  483. 13110 REM * EQUATION 12  ROOT *
  484. 13120 IF NY=1 THEN 13210
  485. 13140 S1=R(23)*R(21)-(R(22)*R(22))
  486. 13150 S2=(R(23)*R(30)-R(22)*R(47))/S1
  487. 13160 S3=(R(21)*R(47)-R(22)*R(30))/S1
  488. 13165 IF S2>87 OR S3>87 THEN 13210
  489. 13170 A(12)=EXP(S2)
  490. 13180 B(12)=EXP(S3)
  491. 13190 RR(12)=(S2*R(30)+S3*R(47)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  492. 13200 RC(12)=1-(((1-RR(12))*(R(21)-1))/(R(21)-2)):C(12)=0
  493. 13210 REM * EQUATION 13  SUPER GEOMETRIC *
  494. 13220 IF NX=1 OR NY=1 THEN 13400
  495. 13240 S1=R(21)*R(49)-(R(48)*R(48))
  496. 13250 S2=(R(30)*R(49)-R(48)*R(50))/S1
  497. 13260 A(13)=EXP(S2)
  498. 13270 B(13)=(R(21)*R(50)-R(30)*R(48))/S1
  499. 13280 RR(13)=(S2*R(30)+B(13)*R(50)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  500. 13290 RC(13)=1-(((1-RR(13))*(R(21)-1))/(R(21)-2))
  501. 13295 C(13)=0
  502. 13300 REM * EQUATION 14  MODIFIED GEOMETRIC *
  503. 13330 S1=R(21)*R(53)-(R(63)*R(63))
  504. 13340 S2=(R(30)*R(53)-R(63)*R(58))/S1
  505. 13350 A(14)=EXP(S2)
  506. 13360 B(14)=(R(21)*R(58)-R(30)*R(63))/S1
  507. 13370 RR(14)=(S2*R(30)+B(14)*R(58)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  508. 13380 RC(14)=1-(((1-RR(14))*(R(21)-1))/(R(21)-2))
  509. 13390 C(14)=0
  510. 13400 REM * EQUATION 15  EXPONENTIAL *
  511. 13420 IF NY=1 THEN 13600
  512. 13430 S1=R(17)*R(21)-(R(16)*R(16))
  513. 13440 S2=(R(17)*R(30)-R(16)*R(46))/S1
  514. 13450 A(15)=EXP(S2)
  515. 13460 B(15)=(R(21)*R(46)-R(16)*R(30))/S1
  516. 13470 RR(15)=(S2*R(30)+R(46)*B(15)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  517. 13480 RC(15)=1-(((1-RR(15))*(R(21)-1))/(R(21)-2))  
  518. 13490 C(15)=0
  519. 13500 REM * EQUATION 16  MODIFIED EXPONENTIAL *
  520. 13530 S1=R(23)*R(21)-(R(22)*R(22))
  521. 13540 S2=(R(23)*R(30)-R(22)*R(47))/S1
  522. 13550 A(16)=EXP(S2)
  523. 13560 B(16)=(R(21)*R(47)-R(22)*R(30))/S1
  524. 13570 RR(16)=(S2*R(30)+B(16)*R(47)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  525. 13580 RC(16)=1-(((1-RR(16))*(R(21)-1))/(R(21)-2)):C(16)=0
  526. 13600 REM * EQUATION 17  LOGARITHMIC *
  527. 13620 IF NX=1 THEN 14000
  528. 13630 S1=R(21)*R(29)-(R(28)*R(28))
  529. 13640 A(17)=(R(18)*R(29)-R(28)*R(51))/S1
  530. 13650 B(17)=(R(21)*R(51)-R(18)*R(28))/S1
  531. 13660 RR(17)=(A(17)*R(18)+B(17)*R(51)-(R(18)*R(18))/R(21))/(R(19)-(R(18)*R(18))/R(21))
  532. 13670 C(17)=0: RC(17)=1-(((1-RR(17))*(R(21)-1))/(R(21)-2))
  533. 13680 REM * EQUATION 18  RECIPROCAL OF LOGARITHMIC *
  534. 13710 S1=R(21)*R(29)-(R(28)*R(28))
  535. 13720 A(18)=(R(24)*R(29)-R(28)*R(52))/S1
  536. 13730 B(18)=(R(21)*R(52)-R(24)*R(28))/S1
  537. 13740 RR(18)=(A(18)*R(24)+B(18)*R(52)-(R(24)*R(24))/R(21))/(R(25)-(R(24)*R(24))/R(21))
  538. 13750 C(18)=0:RC(18)=1-(((1-RR(18))*(R(21)-1))/(R(21)-2))
  539. 14000 REM * EQUATION 19  HOERL FUNCTION *
  540. 14020 IF NX=1 OR NY=1 THEN 14300
  541. 14030 S1=R(17)*R(21)-(R(16)*R(16))
  542. 14040 S2=R(21)*R(32)-R(28)*R(30)
  543. 14050 S3=R(21)*R(48)-R(16)*R(28) 
  544. 14060 S4=R(21)*R(46)-R(16)*R(30)
  545. 14070 S5=R(21)*R(29)-(R(28)*R(28))
  546. 14080 C(19)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  547. 14090 S6=(S4-S3*C(19))/S1
  548. 14100 S7=(R(30)-C(19)*R(28)-S6*R(16))/R(21)
  549. 14105 IF S7>87 OR S8>87 THEN A(19)=0:B(19)=0:C(19)=0:GOTO 14150
  550. 14110 B(19)=EXP(S6)
  551. 14120 A(19)=EXP(S7)
  552. 14130 RR(19)=(S7*R(30)+S6*R(46)+C(19)*R(32)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  553. 14140 RC(19)=1-(((1-RR(19))*(R(21)-1))/(R(21)-3))
  554. 14150 REM * EQUATION 20  MODIFIED HOERL FUNCTION *
  555. 14180 S1=R(21)*R(23)-(R(22)*R(22))
  556. 14190 S2=R(21)*R(32)-R(28)*R(30)
  557. 14200 S3=R(21)*R(45)-R(22)*R(28)
  558. 14210 S4=R(21)*R(47)-R(22)*R(30)
  559. 14220 S5=R(21)*R(29)-(R(28)*R(28))
  560. 14230 C(20)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  561. 14240 S6=(S4-S3*C(20))/S1
  562. 14250 S7=(R(30)-C(20)*R(28)-S6*R(22))/R(21)
  563. 14255 IF S6>87 OR S7>87 THEN A(20)=0:B(20)=0:C(20)=0:GOTO 14300
  564. 14260 A(20)=EXP(S7)
  565. 14270 B(20)=EXP(S6)
  566. 14280 RR(20)=(S7*R(30)+S6*R(47)+C(20)*R(32)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  567. 14290 RC(20)=1-(((1-RR(20))*(R(21)-1))/(R(21)-3))
  568. 14300 REM * EQUATION 21  NORMAL DISTRIBUTION *
  569. 14310 IF NY=1 THEN 14460
  570. 14330 S1=R(17)*R(21)-(R(16)*R(16))
  571. 14340 S2=R(21)*R(54)-R(17)*R(30)
  572. 14350 S3=R(21)*R(40)-R(16)*R(17)
  573. 14360 S4=R(21)*R(46)-R(16)*R(30)
  574. 14370 S5=R(21)*R(43)-(R(17)*R(17))
  575. 14380 S6=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  576. 14390 S7=(S4-S3*S6)/S1
  577. 14400 S8=(R(30)-S7*R(16)-S6*R(17))/R(21)
  578. 14410 A(21)=EXP(S8-((S7*S7)/(4*S6)))
  579. 14420 B(21)=-S7/(2*S6)
  580. 14430 C(21)=1/S6
  581. 14440 RR(21)=(S8*R(30)+S7*R(46)+S6*R(54)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  582. 14450 RC(21)=1-(((1-RR(21))*(R(21)-1))/(R(21)-3))
  583. 14460 REM * EQUATION 22  LOG NORMAL DISTRIBUTION *
  584. 14470 IF NX=1 OR NY=1 THEN 14620
  585. 14490 S1=R(21)*R(29)-(R(28)*R(28))
  586. 14500 S2=R(21)*R(57)-R(29)*R(30)
  587. 14510 S3=R(21)*R(55)-R(28)*R(29)
  588. 14520 S4=R(21)*R(32)-R(28)*R(30)
  589. 14530 S5=R(21)*R(56)-(R(29)*R(29))
  590. 14540 S6=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  591. 14550 S7=(S4-S3*S6)/S1
  592. 14560 S8=(R(30)-S7*R(28)-S6*R(29))/R(21)
  593. 14565 ON ERROR GOTO 0
  594. 14570 Z=(S8-(S7*S7)/(4*S6)):IF Z>85 THEN 14620 ELSE A(22)=EXP(Z)
  595. 14580 B(22)=-S7/(2*S6)
  596. 14590 C(22)=1/S6
  597. 14600 RR(22)=(S8*R(30)+S7*R(32)+S6*R(57)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  598. 14610 RC(22)=1-(((1-RR(22))*(R(21)-1))/(R(21)-3))
  599. 14620 REM * EQUATION 23  BETA DISTRIBUTION *
  600. 14645 IF Q9=1 THEN GOTO 14790
  601. 14650 S1=R(21)*R(29)-(R(28)*R(28))
  602. 14660 S2=R(21)*R(62)-R(30)*R(59)
  603. 14670 S3=R(21)*R(61)-R(28)*R(59)
  604. 14680 S4=R(21)*R(32)-R(28)*R(30)
  605. 14690 S5=R(21)*R(60)-(R(59)*R(59))
  606. 14700 C(23)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  607. 14710 B(23)=(S4-S3*C(23))/S1
  608. 14720 S6=(R(30)-B(23)*R(28)-C(23)*R(59))/R(21)
  609. 14730 A(23)=EXP(S6)
  610. 14740 RR(23)=(S6*R(30)+B(23)*R(32)+C(23)*R(62)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  611. 14750 RC(23)=1-(((1-RR(23))*(R(21)-1))/(R(21)-3))
  612. 14760 REM * EQUATION 24  GAMMA DISTRIBUTION *
  613. 14765 IF NX=1 OR NY=1 THEN 14960
  614. 14790 S1=R(17)*R(21)-(R(16)*R(16))
  615. 14800 S2=R(21)*R(32)-R(28)*R(30)
  616. 14810 S3=R(21)*R(48)-R(16)*R(28)
  617. 14820 S4=R(21)*R(46)-R(16)*R(30)
  618. 14830 S5=R(21)*R(29)-(R(28)*R(28))
  619. 14840 C(24)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  620. 14850 S6=(S4-S3*C(24))/S1
  621. 14860 S7=(R(30)-S6*R(16)-C(24)*R(28))/R(21)
  622. 14870 B(24)=1/S6
  623. 14875 IF S6<=0 THEN B(24)=0:C(24)=0:GOTO 14960
  624. 14880 A(24)=EXP(S7+C(24)*LOG(1/S6))
  625. 14890 RR(24)=(S7*R(30)+S6*R(46)+C(24)*R(32)-(R(30)*R(30))/R(21))/(R(31)-(R(30)*R(30))/R(21))
  626. 14895 RC(24)=1-(((1-RR(24))*(R(21)-1))/(R(21)-3))
  627. 14920 REM * EQUATION 25  CAUCHY DISTRIBUTION *
  628. 14960 S1=R(17)*R(21)-(R(16)*R(16))
  629. 14970 S2=R(21)*R(37)-R(17)*R(24)
  630. 14980 S3=R(21)*R(40)-R(16)*R(17)
  631. 14990 S4=R(21)*R(34)-R(16)*R(24)
  632. 15000 S5=R(21)*R(43)-(R(17)*R(17))
  633. 15010 A(25)=(S1*S2-S3*S4)/(S1*S5-(S3*S3))
  634. 15020 S6=(S4-S3*A(25))/S1
  635. 15030 S7=(R(24)-S6*R(16)-A(25)*R(17))/R(21)
  636. 15040 B(25)=(S6/(2*A(25)))
  637. 15050 C(25)=S7-((S6*S6)/(4*A(25)))
  638. 15060 RR(25)=(S7*R(24)+S6*R(34)+A(25)*R(37)-(R(24)*R(24))/R(21))/(R(25)-(R(24)*R(24))/R(21))
  639. 15070 RC(25)=1-(((1-RR(25))*(R(21)-1))/(R(21)-3))
  640. 15090 PRINT"COEFFICIENTS NOW CALCULATED "
  641. 15100 FOR I=1 TO 25
  642. 15102 IF RR(I)<0 OR RR(I)>1.0001 THEN A(I)=0:B(I)=0:RC(I)=0:C(I)=0:RR(I)=0
  643. 15104 NEXT I
  644. 15106 GOTO 4040
  645. 20000 REM * CALCULATE SUMS AND SUMS OF SQUARES *
  646. 20010 NX=0:NY=0
  647. 20040 FOR I=16 TO 65: R(I)=0: NEXT I
  648. 20041 Q9=0:QA=1:GOTO 3430
  649. 20045 FOR I=1 TO 255
  650. 20046 CLS:COLOR 7,1,0:PRINT"PROCESSING DATA POINT # "; I
  651. 20047 IF X$(1)="END" OR Y$(1)="END" THEN PRINT "NO DATA HAS BEEN ENTERED":PRINT"RETURNING TO MAIN MENU":FOR I1=1 TO 1000:NEXT I1:GOTO 120
  652. 20055 IF X$(I)= "END" OR Y$(I)="END" OR X$(I)="DEL" OR Y$(I)="DEL" GOTO 30000
  653. 20060 X(I)=CDBL(VAL(X$(I))):Y(I)=CDBL(VAL(Y$(I)))
  654. 20065 IF X(I)<0 THEN NX=1
  655. 20066 IF Y(I)<0 THEN NY=1
  656. 20067 IF X(I)=0 THEN X(I)=.0001
  657. 20068 IF Y(I)=0 THEN Y(I)=.0001
  658. 20070 R(16)=R(16)+X(I)
  659. 20080 R(17)=R(17)+X(I)*X(I)
  660. 20090 R(18)=R(18)+Y(I)
  661. 20100 R(19)=R(19)+Y(I)*Y(I)
  662. 20110 R(20)=R(20)+X(I)*Y(I)
  663. 20120 R(21)=I
  664. 20130 R(22)=R(22)+(1/X(I))
  665. 20140 R(23)=R(23)+(1/(X(I)*X(I)))
  666. 20150 R(24)=R(24)+(1/(Y(I)))
  667. 20160 R(25)=R(25)+(1/(Y(I)*Y(I)))
  668. 20170 R(26)=R(26)+(1/(Y(I)*X(I)))
  669. 20180 R(27)=I      
  670. 20190 IF NX<>1 THEN R(28)=R(28)+LOG(X(I))
  671. 20200 IF NX<>1 THEN R(29)=R(29)+(LOG(X(I)))*(LOG(X(I)))
  672. 20210 IF NY <>1 THEN R(30)=R(30)+(LOG(Y(I)))
  673. 20220 IF NY<>1 THEN R(31)=R(31)+(LOG(Y(I)))*(LOG(Y(I)))
  674. 20230 IF NX<>1 AND NY<>1 THEN R(32)=R(32)+(LOG(X(I)))*(LOG(Y(I)))
  675. 20240 R(33)=I
  676. 20250 R(34)=R(34)+(X(I)/Y(I))
  677. 20260 R(35)=R(35)+(Y(I)/X(I))
  678. 20270 R(36)=R(36)+((X(I)*X(I)))*Y(I)
  679. 20280 R(37)=R(37)+((X(I)*X(I)))/Y(I)
  680. 20290 R(38)=R(38)+(Y(I)/(X(I)*X(I)))
  681. 20300 R(39)=R(39)+X(I)*(Y(I)*Y(I))
  682. 20310 R(40)=R(40)+(X(I)*X(I)*X(I))
  683. 20320 R(41)=R(41)+1/((X(I)*X(I)*X(I)))
  684. 20330 R(42)=R(42)+(Y(I)*Y(I)*Y(I))
  685. 20340 R(43)=R(43)+(X(I)*X(I)*X(I)*X(I))
  686. 20350 R(44)=R(44)+1/((X(I)*X(I)*X(I)*X(I)))
  687. 20360 IF NX<>1 THEN R(45)=R(45)+LOG(X(I))/X(I)
  688. 20370 IF NY<>1 THEN R(46)=R(46)+X(I)*LOG(Y(I))
  689. 20380 IF NY<>1 THEN R(47)=R(47)+LOG(Y(I))/X(I)
  690. 20390 IF NX<>1 THEN R(48)=R(48)+X(I)*LOG(X(I))
  691. 20400 IF NX<>1 THEN R(49)=R(49)+(X(I)*LOG(X(I)))*(X(I)*LOG(X(I)))
  692. 20410 IF NX<>1 AND NY<>1 THEN R(50)=R(50)+X(I)*LOG(X(I))*LOG(Y(I))
  693. 20420 IF NX<>1 THEN R(51)=R(51)+Y(I)*LOG(X(I))
  694. 20430 IF NX<>1 THEN R(52)=R(52)+LOG(X(I))/Y(I)
  695. 20440 IF NX<>1 THEN R(53)=R(53)+((LOG(X(I))/X(I)))*((LOG(X(I))/X(I)))
  696. 20450 IF NY<>1 THEN R(54)=R(54)+(X(I)*X(I))*LOG(Y(I))
  697. 20460 IF NX<>1 THEN R(55)=R(55)+((LOG(X(I))*LOG(X(I))*LOG(X(I))))
  698. 20470 IF NX<>1 THEN R(56)=R(56)+((LOG(X(I))*LOG(X(I))*LOG(X(I))*LOG(X(I))))
  699. 20480 IF NX<>1 AND NY<>1 THEN R(57)=R(57)+((LOG(X(I))*LOG(X(I))))*LOG(Y(I))
  700. 20490 IF NX<>1 AND NY<>1 THEN R(58)=R(58)+(LOG(Y(I))*LOG(X(I)))/X(I)
  701. 20500 IF X(I)>=1 THEN Q9=1: GOTO 20540
  702. 20501 IF Q9=1 GOTO 20540
  703. 20502 IF X(I)<=0 THEN 20550
  704. 20505 R(59)=R(59)+LOG(1-X(I))
  705. 20510 R(60)=R(60)+(LOG(1-X(I)))*(LOG(1-X(I)))
  706. 20520 R(61)=R(61)+LOG(X(I))*LOG(1-X(I))
  707. 20530 IF NY<>1 THEN R(62)=R(62)+LOG(Y(I))*LOG(1-X(I))
  708. 20540 IF NX<>1 THEN R(63)=R(63)+(LOG(X(I)))/X(I)
  709. 20550 NEXT I
  710. 20600 NX=0:NY=0
  711. 30000 REM * END OF SUMMATION LOOP *
  712. 30030 CLS:COLOR 7,1,0: PRINT"SUMS HAVE BEEN CALCULATED--NOW CALCULATING COEFFICIENTS": GOTO 12010
  713. 35000 CLS:COLOR 7,1,0:PRINT"EQ #";TAB(9);"COEFFICIENT A";TAB(34);"COEFFICIENT B";TAB(58)"CORRECTED R^2"
  714. 35010 FOR I=1 TO 25
  715. 35015 PRINT I;TAB(5);A(I);TAB(29);B(I);TAB(54);RC(I)
  716. 35016 IF I=22 THEN INPUT"PLEASE PRESS <ENTER> TO CONTINUE";A$
  717. 35018 NEXT I
  718. 35020 INPUT "Please press <ENTER> to continue ";A$:GOTO 4507
  719. 40000 REM * LIST REGISTER CONTENTS R16-R63 *
  720. 40010 CLS
  721. 40025 CLS:COLOR 7,1,0:PRINT"REGISTER CONTENTS:":PRINT" ":PRINT"REG#";TAB(10);"REGISTER";TAB(34);"REGISTER +1";TAB(57);"REGISTER +2":PRINT" ":FOR I=16 TO 63 STEP 3
  722. 40095 PRINT I;TAB(5);R(I);TAB(29);R(I+1);TAB(54);R(I+2)
  723. 40100 NEXT I
  724. 40105 PRINT" "
  725. 40120 INPUT "PLEASE PRESS ENTER TO CONTINUE ";A$
  726. 40122 INPUT"OUTPUT TO PRINTER (Y)ES OR (N)O ";A$
  727. 40124 IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN 40126 ELSE GOTO 120
  728. 40126 FOR I=16 TO 63 STEP 2
  729. 40127 LPRINT "R(";I;")= ";R(I);TAB(40);"R(";I+1;")= ";R(I+1)
  730. 40128 NEXT I
  731. 40129 LPRINT CHR$(12):GOTO 120
  732. 50000 IF LEFT$(Q1$,1)="Y" OR LEFT$(Q1$,1)="y" THEN LP=1 ELSE LP=0
  733. 50010 RETURN
  734. 55000 EQ$(1)="Y=A+B*X":EQ$(2)="Y=B*X":EQ$(3)="Y=1/(A+B*X)":EQ$(4)="Y=A+B*X+C/X":EQ$(5)="Y=A+B/X":EQ$(6)="Y=X/(A*X+B)"
  735. 55010 EQ$(7)="Y=A+B/X+C/X*X":EQ$(8)="Y=A+B*X+C*X*X":EQ$(9)="Y=A*X+B*X*X":EQ$(10)="Y=A*X^B":EQ$(11)="Y=A*B^X"
  736. 55020 EQ$(12)="Y=B^(1/X)":EQ$(13)="Y=A*X^(B*X)":EQ$(14)="Y=A*X^(B/X)":EQ$(15)="Y=A*e^(B*X)":EQ$(16)="Y=A*e^(B/X)"
  737. 55030 EQ$(17)="Y=A+B*lnX":EQ$(18)="Y=1/(A+B*lnX)":EQ$(19)="Y=A*B^X*X^C":EQ$(20)="Y=A*B^(1/X)*X^C"
  738. 55040 EQ$(21)="Y=A*e^((X-B)/2)":EQ$(22)="Y=A*e^((lnX-B)^2/C)":EQ$(23)="Y=A*X^B*(1-X)^C":EQ$(24)="Y=A*(X/B)^C*e^(x/b)"
  739. 55050 EQ$(25)="Y=1/(A*(X+B)^2+C)":RETURN
  740. 61000 IF (ERR=53 OR ERR=64) AND ERL=7050 THEN PRINT "UNABLE TO FIND OR ILLEGAL FILE NAME ";A4$:INPUT "PRESS <ENTER> TO CONTINUE";A$:RESUME 120
  741. 63000 IF ERR=64 AND ERL=6050 THEN PRINT" THE FILE NAME ";A4$;" IS NOT A VALID FILE NAME":INPUT"PRESS <ENTER> TO CONTINUE";A$:RESUME 120
  742. 63500 IF D1>19 THEN D1=8 ELSE IF D1<8 THEN D1=19
  743. 63505 LOCATE D1,7,1,0,31
  744. 63510 D1=CSRLIN
  745. 63520 A$=INKEY$:IF A$=CHR$(13) THEN 63560
  746. 63521 IF A$=CHR$(27) THEN 8000
  747. 63523 IF LEN(A$)=2 THEN A$=RIGHT$(A$,1) ELSE GOTO 63500
  748. 63525 IF A$="H" THEN D1=D1-1:GOTO 63500
  749. 63527 IF A$="P" THEN D1=D1+1:GOTO 63500
  750. 63529 GOTO 63500
  751. 63530 D1=D1+1:GOTO 63500
  752. 63560 D1=CSRLIN
  753. 63565 IF CSRLIN=8 THEN 110
  754. 63580 IF CSRLIN=9 THEN 7030
  755. 63590 IF CSRLIN=10 THEN 2000
  756. 63600 IF CSRLIN=11 THEN 3000
  757. 63610 IF CSRLIN=12 THEN 9005
  758. 63620 IF CSRLIN=13 THEN 4000
  759. 63630 IF CSRLIN=14 THEN 4990
  760. 63640 IF CSRLIN=15 THEN 10000
  761. 63650 IF CSRLIN=16 THEN 4040
  762. 63660 IF CSRLIN=17 THEN 40025
  763. 63670 IF CSRLIN=18 THEN 6030
  764. 63680 IF CSRLIN=19 THEN 8000
  765. 63690 GOTO 63500
  766. 63700 CLS:COLOR 7,1,0:PRINT"DATA CORRECTION":PRINT" "
  767. 63711 CLS:COLOR 7,1,0:M=1:MR=1:MC=1:MR1=1:MC1=1
  768. 63712 PRINT "╔═══════════╦═══════════════════════════════════════════════════════╦═════════╗"
  769. 63713 PRINT "║ CURVEFIT  ║ DATA LIST OF X AND Y VALUES (X$,Y$) NOW IN MEMORY     ║CURVEFIT ║"
  770. 63714 PRINT "╠═════╦═════╩═══╦═════════╦═════╦═════════╦═════════╦═════╦═════════╬═════════╣"
  771. 63715 PRINT "║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║ PT #║ X VALUE ║ Y VALUE ║"
  772. 63716 PRINT "╠═════╬═════════╬═════════╬═════╬═════════╬═════════╬═════╬═════════╬═════════╣"
  773. 63717 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  774. 63718 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  775. 63719 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  776. 63720 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  777. 63721 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  778. 63722 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  779. 63723 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  780. 63724 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  781. 63725 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  782. 63726 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  783. 63727 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  784. 63728 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  785. 63729 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  786. 63730 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  787. 63731 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  788. 63732 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  789. 63733 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  790. 63734 PRINT "║     ║         ║         ║     ║         ║         ║     ║         ║         ║"
  791. 63735 PRINT "╚═════╩═════════╩═════════╩═════╩═════════╩═════════╩═════╩═════════╩═════════╝";
  792. 63736 FOR J=1 TO 255
  793. 63737 IF X$(J)<>"END" OR Y$(J)<>"END" THEN 63746 ELSE 63800
  794. 63746 LOCATE 5+MR,MC+2:PRINT USING "####";M;
  795. 63748 LOCATE 5+MR,MC+7:XX1=VAL(X$(M)):PRINT LEFT$(X$(M),8);:LOCATE 5+MR,MC+17:YY1=VAL(Y$(M)):PRINT LEFT$(Y$(M),8);
  796. 63749 MR=MR+1
  797. 63752 IF M MOD 18=0 THEN MR=1:MC=MC+26
  798. 63753 IF M MOD 54=0 THEN MR=1:MC=1:GOTO 63800
  799. 63777 M=M+1
  800. 63780 NEXT J
  801. 63800 LOCATE 25,1:PRINT"PLEASE PRESS <ENTER> FOR MORE DATA ";:INPUT ;A$:IF M<255 AND X$(J)<>"END" THEN 63900 ELSE GOTO 9008
  802. 63900 DUMMY$="            ":FOR J9=1 TO 54
  803. 63910 LOCATE 5+MR1,MC1+2:PRINT LEFT$(DUMMY$,4);:LOCATE 5+MR1,MC1+7:PRINT LEFT$(DUMMY$,8);:LOCATE 5+MR1,MC1+17:PRINT LEFT$(DUMMY$,8);
  804. 63920 MR1=MR1+1:IF J9 MOD 18=0 THEN MR1=1:MC1=MC1+26
  805. 63930 IF J9 MOD 54=0 THEN MR1=1:MC1=1
  806. 63940 NEXT J9
  807. 63950 GOTO 63777
  808.